From: Florian Müllner Date: Mon, 24 Sep 2012 18:03:53 +0000 (+0200) Subject: keyboard: Ignore focus changes from extended keys X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5726 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ef9f63fe594990119df6a8a0c8ccfd3304c220eb;p=gnome-shell.git keyboard: Ignore focus changes from extended keys The keyboard is shown/hidden automatically when (un)focusing a ClutterText actor. This behavior is unwanted when opening the extended keys popup, so focus changes to the popup are ignored. However, we also want to ignore focus changes from the popup to avoid the keyboard hiding itself after pressing an extended key. https://bugzilla.gnome.org/show_bug.cgi?id=683546 --- diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index f01fdffe4..2389ba5f1 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -201,6 +201,7 @@ const Keyboard = new Lang.Class({ this.actor = null; this._focusInTray = false; + this._focusInExtendedKeys = false; this._timestamp = global.display.get_current_time_roundtrip(); Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._redraw)); @@ -289,7 +290,9 @@ const Keyboard = new Lang.Class({ // Showing an extended key popup and clicking a key from the extended keys // will grab focus, but ignore that - if (focus && (focus._extended_keys || focus.extended_key)) + let extendedKeysWereFocused = this._focusInExtendedKeys; + this._focusInExtendedKeys = focus && (focus._extended_keys || focus.extended_key); + if (this._focusInExtendedKeys || extendedKeysWereFocused) return; // Ignore focus changes caused by message tray showing/hiding